home *** CD-ROM | disk | FTP | other *** search
/ SPACE 1 / SPACE - Library 1 - Volume 1.iso / utilitys / 105 / source / _xformer.h < prev    next >
Encoding:
C/C++ Source or Header  |  1987-11-09  |  6.2 KB  |  177 lines

  1.  
  2. /****************************************************************************
  3.  
  4.   _XFORMER.H  by Darek Mihocka  (CIS: 73657,2714   GEnie: DAREKM)
  5.  
  6.   include file which declares all global variables used by the _X*.C files
  7.  
  8.   Last update: June 14, 1987  19:45
  9.  
  10. ****************************************************************************/
  11.  
  12. #define DISPMODE0 0
  13. #define DISPMODE1 1
  14.  
  15. #define TRUE     1
  16. #define FALSE    0
  17.  
  18.   /* status bits of the P register: (6502)  NV_BDIZC */
  19.  
  20. #define NBIT 0x80
  21. #define VBIT 0x40
  22. #define BBIT 0x10
  23. #define DBIT 0x08
  24. #define IBIT 0x04
  25. #define ZBIT 0x02
  26. #define CBIT 0x01
  27.  
  28.   /* status bits of the CCR register: (68000)  BDIXNZVC */
  29.  
  30. #define BITN 0x08
  31. #define BITV 0x02
  32. #define BITB 0x80
  33. #define BITD 0x40
  34. #define BITI 0x20
  35. #define BITZ 0x04
  36. #define BITC 0x01
  37. #define BITX 0x10
  38.  
  39. #define DBUS    D0
  40. #define IR      D0
  41. #define REGA    D1
  42. #define REGX    D2
  43. #define REGY    D3
  44. #define REGSP   D4
  45. #define REGPC   D5
  46. #define REGST   D6
  47. #define REGEA   D7
  48.  
  49. /* pointer to mem[ea] and otherwise all purpose register*/
  50. #define REGMEA  A0
  51.  
  52. /* constant pointer to vector table */
  53. #define REGOPS  A1
  54.  
  55. /* pointer to mem[pc] */
  56. #define REGMPC  A2
  57.  
  58. /* pointer to stat[0] */
  59. #define REGSTAT A3
  60.  
  61. /* pointer to global C variables */
  62. #define GLOBAL  A4
  63.  
  64. /* A5 no longer used. I found out the hard way (bombs) that Megamax uses it! */
  65.  
  66. /* pointer to the frame (local variables) */
  67. #define LOCAL   A6
  68.  
  69. /* the stack pointer, for some reason, not defined by Megamax */
  70. #define SP      A7
  71.  
  72.  
  73. #define SETREAD   addq.w #1,isread(A4)
  74. #define SETWRITE  clr.w  isread(A4)
  75. #define TESTWRITE tst.W  isread(A4)
  76.  
  77. /* quickly save and restore 6502 variables */
  78. #define SAVEREGS  movem.l D1-D7/A0-A3,-(SP)
  79. #define LOADREGS  movem.l (SP)+,D1-D7/A0-A3
  80.  
  81. /* set the flags right after a register is loaded */
  82. #define FLAGS     move.w  SR,DBUS \
  83.                   and.b   #(BITN|BITZ),DBUS \
  84.                   and.b   #~(BITN|BITZ),REGST \
  85.                   or.b    DBUS,REGST
  86.  
  87. /* finished executing an opcode, check VBI flag and go to dispatch routine */
  88. #define DISPATCH move.l pemul(PC),REGMEA \
  89.                  jmp (REGMEA)
  90.  
  91. /* some not too incredibly useful macros */
  92. #define LOOP while(1)
  93. #define put(x) outchar(x)
  94. #define CR print(strCR)
  95. #define BEL '\007'
  96. #define print(x) put_line(x)
  97.  
  98. extern int
  99.     isread,          /* read/write flag for special opcodes */
  100.     mdRez;           /* screen resolution */
  101.  
  102. extern char
  103.     *mem,            /* 65536 bytes to simulate 6502 memory */
  104.     *stat,           /* status bits for each byte of 6502 memory */
  105.     *scr,            /* pointer to start of title/debugger screen */
  106.     *scr_emul;       /* pointer to start of emulation screen */
  107.  
  108. extern unsigned int
  109.     pc,              /* 6502 program counter (16 bits) */
  110.     ea;              /* used for effective address calculations */
  111.  
  112. extern unsigned char
  113.     a,x,y,sp,ir,p,   /* 6502 registers */
  114.     fTrace ;         /* trace flag */
  115.  
  116. extern int fVBI;                /* set when a 6502 VBI should occur */
  117. extern int rainbow[128];        /* 8 bit color translation table */
  118. extern int fCartA,fCartB;       /* flags set if cartriges loaded */
  119.  
  120. extern rgPalette[2][16];
  121.  
  122. extern int
  123.     (*vec_6502[256])(),         /* pointer to 256 opcode routines  D flag =0 */
  124.     (*dec_6502[256])();         /* pointer to 256 opcode routines  D flag =1 */
  125.  
  126. extern
  127.     pemul(),         /* pointer to emul() */
  128.     emul(),          /* main dispatch routine */
  129.     exit_emul(),     /* exit routine to go back to C */
  130.     emul_serv(),     /* dispatch routine for non-zero status bytes */
  131.     sysvbl();        /* 8-bit system VBI emulation routine */
  132.  
  133. /* Joystick variables and routines */
  134. extern Joy0(),Joy1(),JoyOn(),JoyOff(),oldStick(),Stick();
  135.  
  136. /* vertical blank interrupt variables and routines */
  137. extern VBIon(),VBIoff(),RegA4(),VBI();
  138.  
  139. /* pointer to the keyboard routine in TOS */
  140. extern oldKey();
  141.  
  142. /* tell Megamax that the emulation routines will be found in inline code: */
  143. extern
  144.  op00(), op01(), op02(), op03(), op04(), op05(), op06(), op07(), op08(),
  145.  op09(),op0A(),op0B(), op0C(), op0D(), op0E(), op0F(), op10(), op11(), op12(),
  146.  op13(), op14(), op15(), op16(), op17(), op18(), op19(), op1A(), op1B(),
  147.  op1C(), op1D(), op1E(), op1F(), op20(), op21(), op22(), op23(), op24(),
  148.  op25(), op26(), op27(), op28(), op29(), op2A(), op2B(), op2C(), op2D(),
  149.  op2E(), op2F(), op30(), op31(), op32(), op33(), op34(), op35(), op36(),
  150.  op37(), op38(), op39(), op3A(), op3B(), op3C(), op3D(), op3E(), op3F(),
  151.  op40(), op41(), op42(), op43(), op44(), op45(), op46(), op47(), op48(),
  152.  op49(), op4A(), op4B(), op4C(), op4D(), op4E(), op4F(), op50(), op51(),
  153.  op52(), op53(), op54(), op55(), op56(), op57(), op58(), op59(), op5A(),
  154.  op5B(), op5C(), op5D(), op5E(), op5F(), op60(), op61(), op62(), op63(),
  155.  op64(), op65(), op66(), op67(), op68(), op69(), op6A(), op6B(), op6C(),
  156.  op6D(), op6E(), op6F(), op70(), op71(), op72(), op73(), op74(), op75(),
  157.  op76(), op77(), op78(), op79(), op7A(), op7B(), op7C(), op7D(), op7E(),
  158.  op7F(), op80(), op81(), op82(), op83(), op84(), op85(), op86(), op87(),
  159.  op88(), op89(), op8A(), op8B(), op8C(), op8D(), op8E(), op8F(), op90(),
  160.  op91(), op92(), op93(), op94(), op95(), op96(), op97(), op98(), op99(),
  161.  op9A(), op9B(), op9C(), op9D(), op9E(), op9F(), opA0(), opA1(), opA2(),
  162.  opA3(), opA4(), opA5(), opA6(), opA7(), opA8(), opA9(), opAA(), opAB(),
  163.  opAC(), opAD(), opAE(), opAF(), opB0(), opB1(), opB2(), opB3(), opB4(),
  164.  opB5(), opB6(), opB7(), opB8(), opB9(), opBA(), opBB(), opBC(), opBD(),
  165.  opBE(), opBF(), opC0(), opC1(), opC2(), opC3(), opC4(), opC5(), opC6(),
  166.  opC7(), opC8(), opC9(), opCA(), opCB(), opCC(), opCD(), opCE(), opCF(),
  167.  opD0(), opD1(), opD2(), opD3(), opD4(), opD5(), opD6(), opD7(), opD8(),
  168.  opD9(), opDA(), opDB(), opDC(), opDD(), opDE(), opDF(), opE0(), opE1(),
  169.  opE2(), opE3(), opE4(), opE5(), opE6(), opE7(), opE8(), opE9(), opEA(),
  170.  opEB(), opEC(), opED(), opEE(), opEF(), opF0(), opF1(), opF2(), opF3(),
  171.  opF4(), opF5(), opF6(), opF7(), opF8(), opF9(), opFA(), opFB(), opFC(),
  172.  opFD(), opFE(), opFF(), op61dec(), op65dec(), op69dec(), op6Ddec(),
  173.  op71dec(), op75dec(), op79dec(), op7Ddec(), opE1dec(), opE5dec(), opE9dec(),
  174.  opEDdec(), opF1dec(), opF5dec(), opF9dec(), opFDdec() ;
  175.  
  176.  
  177.